package net.hn.hnms.biz.gasext.dws.service;

import net.hn.hnms.biz.api.safety.gasext.domain.*;
import net.hn.hnms.biz.api.safety.location.model.OutLimitAlarmingInfoVO;
import net.hn.hnms.biz.gasext.dws.domain.dto.EffectiveProductionTimeByMineCodeDto;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import net.hn.hnms.sys.common.mybatis.core.page.PageQuery;
import net.hn.hnms.biz.gasext.dws.domain.vo.*;

import java.util.Date;
import java.util.List;

public interface DwdService {
    /**
     * 大屏首页-安全检测（本地数据）
     * @return
     */
    SafetyMonitoringVo getSafetyMonitoringLocl(String companyCode, String mineCode);

    /**
     * 获取当天报警超限信息
     * @param mineCode
     * @return
     */
    List<OutLimitAlarmingInfoVO> alarmInfoList(String companyCode,String mineCode);

    /**
     * 大屏首页-超员情况
     * @return
     */
    List<OverstaffingSituationDwsVo> getOverstaffingSituation(String companyCode, String mineCode);

    /**
     * 大屏首页-人员检测
     * @return
     */
    PersonnelMonitoringVo getPersonnelMonitoring(String companyCode, String mineCode);

    /**
     * 人员入井后轨迹
     * @param staffCode
     * @param inTime
     * @param mineCode
     * @return
     */
    List<TrailVo> trail(String staffCode, String inTime, String mineCode);

    /**
     * 数据查询-安全监控-实时数据
     * @param pageQuery
     * @param type
     * @param status
     * @return
     */
    ResponsePage<DwdAqjcCdssHVo> aqjkNowDataList(PageQuery pageQuery, String type, String status, String companyCode, String mineCode);

    /**
     * 数据查询-安全监控-历史数据
     * @param pageQuery
     * @param type
     * @param location
     * @param companyCode
     * @param mineCode
     * @param startTime
     * @param endTime
     * @return
     */
    ResponsePage<DwdAqjcCdssDVo> aqjkHisDataList(PageQuery pageQuery, String type, String location, String companyCode, String mineCode, Date startTime, Date endTime);

    /**
     * 数据查询-安全监控-测点信息
     * @param pageQuery
     * @param type
     * @param location
     * @param companyCode
     * @param mineCode
     * @return
     */
    ResponsePage<DwdAqjcCdssDVo> aqjkPointDataList(PageQuery pageQuery, String type, String location, String companyCode, String mineCode);

    /**
     * 数据查询-安全监控-报警明细
     * @param pageQuery
     * @param type
     * @param alarmType
     * @param companyCode
     * @param mineCode
     * @param startTime
     * @param endTime
     * @return
     */
    ResponsePage<DwdAqjcYcbjDVo> aqjkAlarmDataList(PageQuery pageQuery, String type, String alarmType, String companyCode, String mineCode, Date startTime, Date endTime);

    /**
     * 数据查询-测点值时间图
     * @param pointCode
     * @param startTime
     * @param endTime
     * @param mineCode
     * @return
     */
    PointDateListVo trendByPointCode(String pointCode, Date startTime, Date endTime, String mineCode);

    /**
     * 获取当前煤矿的甲烷和一氧化碳超限
     * @param mineCode
     * @return
     */
    Ch4AndCoOverrunVo getCh4AndCoOverrunVo(String mineCode);

    /**
     * 根据煤矿编码获取有效生产时长列表
     * @param mineCode
     * @param startTime
     * @param endTime
     * @return
     */
    List<EffectiveProductionTimeByMineCodeDto> getEffectiveProductionTimeByMineCode(String mineCode, Date startTime, Date endTime);

    /**
     * 根据煤矿编码和天数获取有效生产时长统计
     * @param mineCode
     * @param day
     * @return
     */
    CurveVo getEffectiveProductionTimeByMineCodeAndDay(String mineCode, String day);

    /**
     * getEffectiveProductionTimeAllMineCode
     * @param startTime
     * @param endTime
     * @return
     */
    List<EffectiveProductionTimeByMineCodeVo> getEffectiveProductionTimeAllMineCode(Date startTime, Date endTime);

    /**
     * 重点设备情况运行状态
     * @return
     */
    List<MineALlSwitchVo> equipmentSwitch(String companyCode, String mineCode);

    /**
     * 根据姓名和煤矿编码获取轨迹
     * @param name
     * @param mineCode
     * @return
     */
    LeadInfoVO getTrailByName(String name, String mineCode);

    /**
     * 根据姓名和煤矿编码获取轨迹-历史轨迹
     * @param name
     * @param inTime
     * @param mineCode
     * @return
     */
    LeadInfoVO getHisTrailByName(String name,String code, String inTime,String dataUptime, String mineCode);

    /**
     * pc-主页-矿井类型
     * @param companyCode
     * @param mineCode
     * @return
     */
    List<MineTypeVo> mineType(String companyCode, String mineCode);

    /**
     * pc-主页-安全天数
     * @param companyCode
     * @param mineCode
     * @return
     */
    String safeDays(String companyCode, String mineCode);
}
